import 	{sleep}  from '../../../function/test.js'

/* 气泡文字提示相关事件 */
export default {
	data() {
		return {
			// 气泡View抽屉盒子开关
			TextBubbleView:{
				/* 气泡View抽屉面板盒子 */
				isShow:false,
				/* 内置通用的气泡文字盒子(下一集提示等) */
				xtBubble_drawer:false,
				/* 用户通过api方法调用时显示的自定义气泡文字盒子 */
				userBubble_drawer:false,
			},
			// 气泡文字View抽屉盒子距离下面的距离
			TextBubble_bottom:0,
			// 气泡文字提示时，显示的视频标题等
			VideoTitle_TextBubble:'',
			// 气泡文字View盒子拦截器
			TextBubbleFlng:false,
			// 气泡文字颜色,为空则使用默认#f1f1f1
			TextBubbleColor:'',
			TextBubble_SkipWeiCi: 0,//即将为你跳过片尾的提示次数，只提示一次（时间小于时再重制为0）
			No_next: false,// 是否无下一集（用于没有最后下一集了并且已经提示过“没有下一集了哦”之后赋值）
		}
	},
	watch:{
		timeUpdate:{
			handler:function(newUpdate,oldUpdate){

				// myVideo 正常视频 
				// 当前时长（当前播放进度/时间） 2021-1220新增 Math.round() 四舍五入取整
				let current_time = Math.round(newUpdate[0].currentTime)//当前时长 用四舍五入
				// 总时长（总时间）
				let duration_time = Math.floor(newUpdate[0].duration)//总时长 用向下取整
				// 获取用户设置的倒数第n分钟后显示下一集气泡文字提示（用于显示如“接下来 一生一世 第2集”）
				let NextTextBubble_Time = this.NextTextBubbleTime
				
				// 监听当前进度是否>=用户设置的倒数n分钟提示下一集的气泡文字
				if (this.ref_type=='my'&&this.isPlay==true&&current_time>=1&&NextTextBubble_Time>=1&&current_time>=duration_time-NextTextBubble_Time){
					// 如果当前时长>=倒数第n分钟时，打开下一集气泡文字提示
					if (this.TextBubbleFlng==true&&this.isPlay==true) {
						this.openNextPlayTextBubbleView()
						this.TextBubbleFlng = false
					}
					//
				}else if (this.ref_type=='my'&&current_time >=1 && current_time<duration_time-NextTextBubble_Time) {
					// 下面用于用户如果又后退了播放进度/时间 则重制
					this.TextBubbleFlng = true
					this.TextBubble_SkipWeiCi = 0
				}
				
				// [新版本] 2021-1220新增代码，如果播放状态为true时则重新赋值this.video_autoplay = false
				// if (this.isPlay==true){
				// 	this.video_autoplay = false
				// }
				
				
				//console.log(current_time,duration_time)
				
				// [新版本] 2021-1220 新增代码，如果 当前时长 = 总时长 ，则自动下一集。修复不设置跳过片尾时间或为0时，不会自动下一集的bug
				if (this.ref_type=='my'&&this.islive_player==false&&current_time>=1&&current_time==duration_time){
					//console.log('自动下一集')
					// 获取共有多少集
					let Index_count = Number(this.VideoSrcList.length-1)
					// 获取当前集数索引
					let Index = this.VideoSrcIndex
					// 判断是否是 单集循环播放
					if (this.video_loop==false){
						if (Index_count==Index){
							// 已经是最后一集，不可以自动下一集，只能从第一集开始播放
							//this.IndexPlay(0) 202-0321注释
							/* 3.5.1 版本新增 - 2022-0321
							 * 调整连续播放为用户需求的【视频最后一集播放完后停止播放 不要自动跳转到第一集】
							 */
							if (this.No_next == true) return
							this.uniShowToast('没有下一集了哦')
						}else {
							// 不是单集循环播放才可以自动下一集 （ps：loop=false 不是单集播放(单集循环播放)）
							this.nextPlay()
						}
					}else {
						// 是单集循环播放，直接重播（直接调用重新播放）
						this.restartPlay()
					}
					//
				}
				

				// [新版本]2021-1220 新增 &&this.SkipWeiTime>=1 才有效，修复组件上绑定 SkipWeiTime=0 也会提示的bug
				// 监听当前进度/时间，是否快满足跳过片尾的时间（一般提前5秒提示即将跳过片尾）
				if (this.ref_type=='my'&&this.islive_player==false&&this.SkipWeiTime>=1&&this.isPlay==true && current_time>=1 &&current_time>=duration_time-this.SkipWeiTime-5){
					
					// 判断“跳过片尾”是否开启，并提前提示
					if (this.isSkipWei==true) {
						// 气泡文字显示的标题
						var title
						// 提前10秒提示即将跳过片尾
						if (this.video_loop==false){
							/* 不是单集播放（不是单集循环） */
							// 设置气泡文字显示的标题
							title = '即将为你跳过片尾'
						}else {
							/* 是单集播放（是单集循环） */
							// 设置气泡文字显示的标题
							title = '即将为你跳过片尾并重播'
						}
						
						// 设置气泡文字颜色
						var color
						// 获取模板文字色
							// [新版本] 2021-1220 调整代码
							// 获取进度条slider滑块左侧已选择部分的线条颜色
							color = this.VideoSliderConfing.activeColor 
						var options = {
							title,
							color,
							time:3000
						}
						// 判断是否可以提示 即将为你跳过下一集，这里必须用次数拦截，不如时间一直在更新，会一直执行下面代码，那是不对的
						if (this.TextBubble_SkipWeiCi==0){
							// 打开气泡文字View抽屉盒子并设置标题
							this.openTextBubbleView(options)
							// 设置跳过片尾的提示次数为1，代表已经执行过了一次，不能再执行了，除非时间小于时候，才重制为0
							this.TextBubble_SkipWeiCi = 1
						}
					}
				}
				
				// [新版本]2021-1220 新增 &&this.SkipWeiTime>=1 才有效，修复组件上绑定 SkipWeiTime=0 也会提示的bug
				// 监听当前进度/时间，是否满足跳过片尾的时间
				if (this.ref_type=='my'&&this.islive_player==false&&this.SkipWeiTime>=1&&this.isPlay==true&&current_time>=1&&current_time>=duration_time-this.SkipWeiTime) {
					//console.log('测试测试测试.......')
					
					// 获取共有多少集
					let Index_count = Number(this.VideoSrcList.length-1)
					// 获取当前集数索引
					let Index = this.VideoSrcIndex
					// 判断“跳过片尾”是否开启并播放下一集
					if (this.isSkipWei==true&&this.video_loop==false) {
						/* ps：跳过片尾并且是(全集循环/连续播放) */
						// 跳过片尾并下一集
						if (Index_count==Index){
							// 已经是最后一集，不可以自动下一集，只能从第一集开始播放
							//this.IndexPlay(0) 202-0321注释
							/* 3.5.1 版本新增 - 2022-0321
							 * 调整为用户需求的【视频最后一集播放完后停止播放 不要自动跳转到第一集】
							 */
							// 如果已经提示过了一次“没有下一集了哦”则下次直接返回出去,不让继续执行
							if (this.No_next == true) return 
							this.uniShowToast('没有下一集了哦')
							this.pause()
							this.No_next = true
						}else {
							// 不是单集播放才可以自动下一集 （ps：video_loop=false 不是单集播放(单集循环播放)）
							this.nextPlay()
						}
					}else if (this.isSkipWei==true&&this.video_loop==true) {
						/* ps：跳过片尾并且是(单集循环/单集播放) */
						// 跳过片尾并重播（直接调用重新播放）
						this.restartPlay()
						//
					}else if (this.isSkipWei==false&&this.video_loop==false) {
						/* ps：不跳过片尾并且(全集循环/连续播放) */
						// 不跳过片尾并下一集
						if (Index_count==Index){
							// 已经是最后一集，不可以自动下一集，只能从第一集开始播放
							//this.IndexPlay(0) 202-0321注释
							/* 3.5.1 版本新增 - 2022-0321
							 * 调整为用户需求的【视频最后一集播放完后停止播放 不要自动跳转到第一集】
							 */
							// 如果已经提示过了一次“没有下一集了哦”则下次直接返回出去,不让继续执行
							if (this.No_next == true) return 
							this.uniShowToast('没有下一集了哦')
							this.pause()
							this.No_next = true
						}else {
							// 不是单集播放才可以自动下一集 （ps：video_loop=false 不是单集播放(单集循环播放)）
							this.nextPlay()
						}
					}else if (this.isSkipWei==false&&this.video_loop==true){
						/* ps：不跳过片尾并且是(单集循环/单集播放) */
						// 不跳过片尾并重播（直接调用重新播放）
						this.restartPlay()
					}else {

					}
				}

				// [新版本]2021-1220 新增 &&this.SkipToTime>=1 才有效，修复组件上绑定 SkipToTime=0 也会提示的bug
				// 判断当前时间是否小于跳过片头的时间
				if (this.ref_type=='my'&&this.islive_player==false&&this.SkipToTime>=1&&this.isPlay==true&&current_time<this.SkipToTime&&this.HDRseekEvent==false){
					// 2021-1119-0511 此处代码 增加this.isPlay==true，修复切换画质时，没有尊敬的用户你正在切换画质的提示

					/* 2021-1116-1150 调整到此处（从setUpdateVideoSrc.js迁移过来的） */
					// 获取跳过片头的时间
					var tgptTime = this.SkipToTime
					if (this.isSkipTo==false){
						// 设置跳过片头时间
						this.seek(0)
						//
					}else if (this.isSkipTo==true&&tgptTime>=1){
						// 设置触摸移动时拦截器 = 1 （Touch.js）
						this.SkipToCurrTimeCi = 1
						//console.log('跳过片头-----------------###########')
						// 设置跳过片头时间
						this.seek(tgptTime)
						/* 3.5.1 新增HDRseekEvent补充的另一个方面作用 2022-0326
						* 为true时，也可以用于当用户调节视频进度小于跳过片头时间时，不再自动执行跳过片头的时间
						* bug反馈为：跳过视频片头，无法快进到跳过片头之前的时间去，比如跳过片头为第60秒，我想手动跳到底30秒，但会在跳到30秒后又自动回到60秒
						*/
						// 设置为true (用于不去走TexeBubble.js里的跳过片头的代码块，也就是此处的代码)
						this.HDRseekEvent = true
						// 将跳过片头的秒数转为分钟
						var minute = this.formatSeconds(tgptTime)
						// 设置气泡文字显示的标题
						var title = '已为你跳过片头 '+minute
						// 设置气泡文字颜色
						var color
						// 获取模板文字色
							// [新版本] 2021-1220 调整代码
							// 获取进度条slider滑块左侧已选择部分的线条颜色
							color = this.VideoSliderConfing.activeColor 
						var options = {
							title,
							color,
							time:6000
						}
						// 打开气泡文字View抽屉盒子并设置标题
						this.openTextBubbleView(options)
					}
				}
			},
			// 此处不需要监听第一次绑定的值，不然seek会先执行一次，但此时视频数据可能还在请求，所以控制台有个seek爆红，这是不好的
			//immediate: true,//普通监听（可监听到第一次绑定的变化）
			deep: true//深度监听（可监听对象内属性变化）
		},
		show:{
			handler:function(newShow,oldShow){
				/* ! 2022-0105 => 3.3.3版本改为rpx了，所以在参数后面*2，然后View视图层上由px改成了rpx单位，因为上个版本px是rpx的一半，所以直接*2就好了 */ 
				// 监听show变化，并修改气泡文字View抽屉盒子距离下面的距离
				if (newShow==true&&this.isFullScreenChange==true){
					// 进入全屏时
					this.TextBubble_bottom = Number(75+10)*2 // rpx
					//
				}else if (newShow==true&&this.isFullScreenChange==false) {
					// 退出全屏时
					this.TextBubble_bottom = Number(35+5)*2 //rpx
					//
				}else if (newShow==false) {
					this.TextBubble_bottom = 10*2 //rpx
				}
			},
			immediate: true,//普通监听（可监听到第一次绑定的变化）
		},
		isFullScreenChange:{
			/* ! 2022-0105 => 3.3.3版本改为rpx了，所以在参数后面*2，然后View视图层上由px改成了rpx单位，因为上个版本px是rpx的一半，所以直接*2就好了 */
			// 监听进入全屏和退出全屏时，修改气泡文字View抽屉盒子距离下面的距离
			handler:function(newFull,oldFull){
				if (newFull==true&&this.show==true){
					// 进入全屏时
					this.TextBubble_bottom = Number(75+10)*2 //rpx
					//
				}else if (newFull==false&&this.show==true) {
					// 退出全屏时
					this.TextBubble_bottom = Number(35+5)*2 //rpx
					//
				}
			},
			immediate: true,//普通监听（可监听到第一次绑定的变化）
		},
		// 监听是否跳过片头
		isSkipTo:{
			handler(newSkipTo,oldSkipTo){
				// 当前进度
				let currTime = this.timeUpdate[0].currentTime
				// 获取跳过片头的时间
				let currSkipToTime = this.SkipToTime
				if (this.ref_type=='my'&&newSkipTo==true&&currTime>=2&&currTime<=(currSkipToTime-5)){
					// 设置跳过片头时间
					this.seek(currSkipToTime)
					// 将跳过片头的秒数转为分钟
					var minute = this.formatSeconds(tgptTime)
					// 设置气泡文字显示的标题
					var title = '已为你跳过片头 '+minute
					// 设置气泡文字颜色
					var color
					// 获取模板文字色
						// [新版本] 2021-1220 调整代码
						// 获取进度条slider滑块左侧已选择部分的线条颜色
						color = this.VideoSliderConfing.activeColor 
					var options = {
						title,
						color,
						time:6000
					}
					// 打开气泡文字View抽屉盒子并设置标题
					this.openTextBubbleView(options)
				}
			},
			immediate: true,//普通监听（可监听到第一次绑定的变化）
		}
	},
	methods:{
		// 打开下一集提示的气泡文字（如“接下来 一生一世 第2集”）
		async openNextPlayTextBubbleView(){
			// 打开气泡View抽屉面板盒子
			this.TextBubbleView.isShow = true
			/* 3.5.1 新增优化sleep 2022-0325 */
			// 延时100毫秒后执行
			await sleep(100)
			// 打开内置通用的气泡文字盒子(下一集提示等)
			this.TextBubbleView.xtBubble_drawer = true
			// 获取视频索引
			let VdieoIndex 
			// 判断是否单集循环
			if (this.video_loop==false){
				// 不是单集循环
				// 获取下一集视频集数
				VdieoIndex = Number(this.VideoSrcIndex+1)
			}else {
				// 是单集循环
				// 获取当前视频集数
				VdieoIndex = Number(this.VideoSrcIndex)
			}
			
			// 获取下一集视频标题
			let VideoTitle = this.VideoSrcList[VdieoIndex].Bubble_tilte
			// 设置气泡文字提示时显示的视频标题等
			this.VideoTitle_TextBubble = '接下来  '+VideoTitle+'  第'+Number(VdieoIndex+1)+'集'//从0算起，所以提示要加1
			// 设置气泡文字颜色
			this.TextBubbleColor = '#f1f1f1'
			
			// 打开下一集气泡文字提示时，延时5秒后关闭下一集气泡文字提示
			await sleep(5000)
			this.closeTextBubbleView()
		},
		// 关闭气泡文字View抽屉面板
		closeTextBubbleView(){
			// 关闭气泡文字View抽屉面板盒子
			this.TextBubbleView.isShow = false
			// 关闭内置通用的气泡文字盒子(如下一集提示等)
			this.TextBubbleView.xtBubble_drawer = false
		},
		// 打开气泡文字View抽屉面板（title:标题，color:文字颜色，tiem：延时关闭的时间）
		async openTextBubbleView(options){
			//console.log('气泡文字')
			//console.log(options)
			// 打开气泡文字View抽屉面板盒子
			this.TextBubbleView.isShow = true
			// 延时打开
			await sleep(100)
			// 打开内置通用的气泡文字盒子(如下一集提示等)
			this.TextBubbleView.xtBubble_drawer = true
			// 设置气泡文字提示时显示的标题等
			this.VideoTitle_TextBubble = options.title
			// 设置气泡文字颜色
			this.TextBubbleColor = options.color
			// 延时关闭
			if (options.time >= 100) {
				// 打开气泡文字提示时，延时n秒后关闭气泡文字提示
				await sleep(options.time)
				this.closeTextBubbleView()
			}
		}
	}
}